package com.happok.onlineclass.usermanagement.setting.service;

import com.happok.onlineclass.usermanagement.setting.dto.*;
import com.happok.onlineclass.usermanagement.setting.po.SmsPO;

import java.util.List;

/**
 * 接口分类                        yapi 分类文件夹
 * 功能说明
 *
 * @author : chenac
 * @module 项目名称/模块名          yapi 项目组/子项目
 * @date : 2021/10/9 13:50
 */
public interface SettingService {
    /**
     * 查询各功能状态
     *
     * @param
     * @author: chenac
     * @date:  15:01
     * @execption:
     * @return: java.util.List<com.happok.onlineclass.usermanagement.setting.dto.FunctionStatusDTO>
     */
    List<FunctionStatusDTO> getFunctionStatus();

    /**
     * 修改邮箱设置
     *
     * @param emailSetting
     * @author: chenac
     * @date: 13:52
     * @execption:
     * @return: void
     */
    void updateEmailSetting(EmailSettingDTO emailSetting);

    /**
     * 查询邮箱设置
     *
     * @param
     * @author: chenac
     * @date: 11:21
     * @execption:
     * @return: com.happok.onlineclass.usermanagement.setting.dto.EmailSettingInfoDTO
     */
    EmailSettingInfoDTO getEmailSetting(boolean encrypt);

    /**
     * 修改短信设置
     *
     * @param smsSetting
     * @author: chenac
     * @date:  12:12
     * @execption:
     * @return: void
     */
    void updateSmsSetting(SmsSettingDTO smsSetting);

    /**
     * 查询短信设置
     *
     * @param
     * @author: chenac
     * @date:  9:54
     * @execption:
     * @return: com.happok.onlineclass.usermanagement.setting.dto.SmsSettingInfoDTO
     */
    List<SmsSettingInfoDTO> listSmsSetting();

    /**
     * 短信平台禁启用
     *
     * @param smsEnable
     * @author: chenac
     * @date:  10:09
     * @execption:
     * @return: void
     */
    void smsEnable(SmsEnableDTO smsEnable);

    /**
     * 短信平台禁启用
     *
     * @param userRegisterStatusDTO
     * @author: chenac
     * @date:  12:21
     * @execption:
     * @return: void
     */
    void openOrCloseUserRegister(UserRegisterStatusDTO userRegisterStatusDTO);

    /**
     * 修改用户注册验证
     *
     * @param updateVerify
     * @author: chenac
     * @date:  14:01
     * @execption:
     * @return: void
     */
    void updateUserRegister(UpdateVerifyDTO updateVerify);

    /**
     * 查询用户注册验证
     *
     * @param
     * @author: chenac
     * @date:  14:14
     * @execption:
     * @return: com.happok.onlineclass.usermanagement.setting.dto.UpdateVerifyDTO
     */
    FunctionVerifyDTO getUserRegister();

    /**
     * 修改用户登录验证
     *
     * @param updateVerify
     * @author: chenac
     * @date:  14:20
     * @execption:
     * @return: void
     */
    void updateUserLogin(UpdateVerifyDTO updateVerify);

    /**
     * 查询用户登录验证
     *
     * @param
     * @author: chenac
     * @date:  14:21
     * @execption:
     * @return: com.happok.onlineclass.usermanagement.setting.dto.UpdateVerifyDTO
     */
    FunctionVerifyDTO getUserLogin();

    /**
     * 修改忘记密码验证
     *
     * @param updateVerify
     * @author: chenac
     * @date:  14:21
     * @execption:
     * @return: void
     */
    void updateForgetPwd(UpdateVerifyDTO updateVerify);

    /**
     * 查询忘记密码验证
     *
     * @param
     * @author: chenac
     * @date:  14:21
     * @execption:
     * @return: com.happok.onlineclass.usermanagement.setting.dto.UpdateVerifyDTO
     */
    FunctionVerifyDTO getForgetPwd();

    /**
     * 修改重置密码验证
     *
     * @param updateVerify
     * @author: chenac
     * @date:  14:22
     * @execption:
     * @return: void
     */
    void updateResetPwd(UpdateVerifyDTO updateVerify);

    /**
     * 查询重置密码验证
     *
     * @param
     * @author: chenac
     * @date:  14:22
     * @execption:
     * @return: com.happok.onlineclass.usermanagement.setting.dto.UpdateVerifyDTO
     */
    FunctionVerifyDTO getResetPwd();

    /**
     * 修改手机号或邮箱验证
     *
     * @param updateVerify
     * @author: chenac
     * @date:  14:22
     * @execption:
     * @return: void
     */
    void updateModifyAccount(UpdateVerifyDTO updateVerify);

    /**
     * 查询手机号或邮箱验证
     *
     * @param
     * @author: chenac
     * @date:  14:23
     * @execption:
     * @return: com.happok.onlineclass.usermanagement.setting.dto.UpdateVerifyDTO
     */
    FunctionVerifyDTO getModifyAccount();

    /**
     * 修改平台添加用户验证
     *
     * @param updateVerify
     * @author: chenac
     * @date:  14:23
     * @execption:
     * @return: void
     */
    void updateAddUser(UpdateVerifyDTO updateVerify);

    /**
     * 查询平台添加用户验证
     *
     * @param
     * @author: chenac
     * @date:  14:23
     * @execption:
     * @return: com.happok.onlineclass.usermanagement.setting.dto.UpdateVerifyDTO
     */
    FunctionVerifyDTO getAddUser();

    /**
     * 获取启用的短信服务设置
     *
     * @param
     * @author: chenac
     * @date:  9:40
     * @execption:
     * @return: java.lang.Boolean
     */
    SmsPO getSmsSettingEnable();

    /**
     * 判断短信服务设置是否已可用
     * 接口描述
     * @param smsSetting
     * @author: chenac
     * @date:  10:00
     * @execption:
     * @return: java.lang.Boolean
     */
    Boolean smsSettingEnable(SmsPO smsSetting);

    /**
     * 判断邮箱服务设置是否可用
     *
     * @param
     * @author: chenac
     * @date:  9:43
     * @execption:
     * @return: java.lang.Boolean
     */
    Boolean emailSettingEnable(EmailSettingInfoDTO emailSettingInfoDTO);

    /**
     * 获取功能设置
     *
     * @param functionClassify
     * @author: chenac
     * @date:  10:09
     * @execption:
     * @return: com.happok.onlineclass.usermanagement.setting.dto.FunctionVerifyDTO
     */
    FunctionVerifyDTO getFunctionSetting(FunctionClassifyEnum functionClassify);

    /**
     * 检测功能和设置
     *
     * @param phone
     * @param email
     * @param functionClassify
     * @author: chenac
     * @date:  15:50
     * @execption:
     * @return: void
     */
    void checkFunctionAndSetting(String phone, String email, FunctionClassifyEnum functionClassify);

    /**
     * 功能是否正常
     *
     * @param functionVerify
     * @author: chenac
     * @date:  11:41
     * @execption:
     * @return: java.lang.Boolean
     */
    Boolean functionEnable(FunctionVerifyDTO functionVerify);
}